2017-05-30 34 views
1

考虑例如:是否可以从AIGER输出中删除时钟输入变量?

read_verilog ./tests/simple/fsm.v 
synth -flatten -top fsm_test 
abc -g AND 
write_aiger -ascii -symbols hoho.aag 

所得AIGER文件包含输入变量clk,其被悬空。
是否可以避免在AIGER中引入这样的时钟输入?
谢谢。

回答

1

不自动。有以下选项:

  1. 只需使用SystemVerilog $ global_clock功能即可避免产生时钟输入。使用always @($global_clock)而不是always @(posedge clk),然后从您的设计中删除clk输入。

  2. 删除接近综合脚本末尾的时钟输入。即在致电write_aiger之前打电话给delete -input fsm_test/clk。这会将时钟信号转变为模块内部的悬空导线。在运行大量优化命令之前,您应该避免这样做,否则您可能会让Yosys优化掉所有FF。但是,在脚本结尾处做这件事应该没问题。

  3. 您可以结合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 
相关问题