-- | -- Module : Verismith.Circuit -- Description : Definition of the circuit graph. -- Copyright : (c) 2018-2019, Yann Herklotz -- License : GPL-3 -- Maintainer : yann [at] yannherklotz [dot] com -- Stability : experimental -- Portability : POSIX -- -- Definition of the circuit graph. module Verismith.Circuit ( -- * Circuit Gate (..), Circuit (..), CNode (..), CEdge (..), fromGraph, generateAST, rDups, rDupsCirc, randomDAG, genRandomDAG, ) where import Control.Lens import Hedgehog (Gen) import qualified Hedgehog.Gen as Hog import Verismith.Circuit.Base import Verismith.Circuit.Gen import Verismith.Circuit.Random import Verismith.Verilog.AST import Verismith.Verilog.Mutate fromGraph :: Gen (ModDecl ann) fromGraph = do gr <- rDupsCirc <$> Hog.resize 100 randomDAG return $ initMod . head $ nestUpTo 5 (generateAST gr) ^.. _Wrapped . traverse