是否可以从AIGER输出中删除时钟输入变量?

时间:2017-05-30 16:34:14

标签: yosys

考虑一下这个例子:

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

生成的AIGER文件包含悬空的输入变量clk 是否可以避免将这种时钟输入引入AIGER?
感谢。

1 个答案:

答案 0 :(得分: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 / $_FF_个单元格($global_clock生成的FF单元格 - 块)。这种方法的优点是它使clk线真正未使用,因此没有优化混乱FF的风险,因为它们具有未驱动的时钟输入。我现在在commit e7a984a中添加了dff2ff.v techmap文件,这简化了这一点。

  4. 选项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 commit 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