read_verilog ./tests/simple/fsm.v
synth -flatten -top fsm_test
abc -g AND
write_aiger -ascii -symbols hoho.aag
所得AIGER文件包含输入变量clk
,其被悬空。
是否可以避免在AIGER中引入这样的时钟输入?
谢谢。
read_verilog ./tests/simple/fsm.v
synth -flatten -top fsm_test
abc -g AND
write_aiger -ascii -symbols hoho.aag
所得AIGER文件包含输入变量clk
,其被悬空。
是否可以避免在AIGER中引入这样的时钟输入?
谢谢。
不自动。有以下选项:
只需使用SystemVerilog $ global_clock功能即可避免产生时钟输入。使用always @($global_clock)
而不是always @(posedge clk)
,然后从您的设计中删除clk
输入。
删除接近综合脚本末尾的时钟输入。即在致电write_aiger
之前打电话给delete -input fsm_test/clk
。这会将时钟信号转变为模块内部的悬空导线。在运行大量优化命令之前,您应该避免这样做,否则您可能会让Yosys优化掉所有FF。但是,在脚本结尾处做这件事应该没问题。
您可以结合2.将FF映射到/$_FF_
单元(由$global_clock
块生成的FF单元的种类)。这种方法的优点是它使得clk线路真正不被使用,因此不存在与FF混淆的优化风险,因为它们具有未驱动的时钟输入。我现在在提交e7a984a中添加了一个dff2ff.v
techmap文件,简化了这一点。
脚本选项2:
read_verilog ./tests/simple/fsm.v
synth -flatten -top fsm_test
abc -g AND
delete -input fsm_test/clk
write_aiger -ascii -symbols hoho.aag
脚本选项3(需要Yosys git的承诺e7a984a或更高版本):
read_verilog ./tests/simple/fsm.v
hierarchy -top fsm_test
proc
techmap -map +/dff2ff.v
delete fsm_test/clk
synth -flatten
abc -g AND
write_aiger -ascii -symbols hoho.aag