mirror of
https://github.com/YosysHQ/yosys
synced 2025-08-06 19:21:23 +00:00
Add pmgen "generate" feature
Signed-off-by: Clifford Wolf <clifford@clifford.at>
This commit is contained in:
parent
4a57b7e1ab
commit
c710df181c
3 changed files with 208 additions and 13 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue