aboutsummaryrefslogtreecommitdiffstats
path: root/passes/pmgen/test_pmgen.pmg
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2019-08-16 13:26:36 +0200
committerClifford Wolf <clifford@clifford.at>2019-08-16 13:26:36 +0200
commitc710df181c2e9931ce464ea60568c864b7195e8b (patch)
tree5f7ae08ea90c374688f46e36e692db665a21b475 /passes/pmgen/test_pmgen.pmg
parent4a57b7e1abe148b36827a393fd7fe62e46c2b1a7 (diff)
downloadyosys-c710df181c2e9931ce464ea60568c864b7195e8b.tar.gz
yosys-c710df181c2e9931ce464ea60568c864b7195e8b.tar.bz2
yosys-c710df181c2e9931ce464ea60568c864b7195e8b.zip
Add pmgen "generate" feature
Signed-off-by: Clifford Wolf <clifford@clifford.at>
Diffstat (limited to 'passes/pmgen/test_pmgen.pmg')
-rw-r--r--passes/pmgen/test_pmgen.pmg22
1 files changed, 22 insertions, 0 deletions
diff --git a/passes/pmgen/test_pmgen.pmg b/passes/pmgen/test_pmgen.pmg
index ccb37e553..077d337d6 100644
--- a/passes/pmgen/test_pmgen.pmg
+++ b/passes/pmgen/test_pmgen.pmg
@@ -13,6 +13,22 @@ endcode
match first
select first->type.in($_AND_, $_OR_, $_XOR_)
filter !non_first_cells.count(first)
+generate
+ SigSpec A = module->addWire(NEW_ID);
+ SigSpec B = module->addWire(NEW_ID);
+ SigSpec Y = module->addWire(NEW_ID);
+ switch (rng(3))
+ {
+ case 0:
+ module->addAndGate(NEW_ID, A, B, Y);
+ break;
+ case 1:
+ module->addOrGate(NEW_ID, A, B, Y);
+ break;
+ case 2:
+ module->addXorGate(NEW_ID, A, B, Y);
+ break;
+ }
endmatch
code
@@ -64,6 +80,12 @@ match next
select next->type.in($_AND_, $_OR_, $_XOR_)
index <IdString> next->type === chain.back().first->type
index <SigSpec> port(next, \Y) === port(chain.back().first, chain.back().second)
+generate 50
+ SigSpec A = module->addWire(NEW_ID);
+ SigSpec B = module->addWire(NEW_ID);
+ SigSpec Y = port(chain.back().first, chain.back().second);
+ Cell *c = module->addAndGate(NEW_ID, A, B, Y);
+ c->type = chain.back().first->type;
endmatch
code