2017年7月21日金曜日

Verilog における force 文メモ

非同期分周器のVerilogシミュレーションでforce文を使ったのでメモ.

Verilogで特定のノードの値を強制的に指定するために,force文を使う.force文の指定を解除するためには,release文を使う.非同期分周器の場合,分周器の入力に対して強制的に値を指定し,クロック立ち上がりを入力し値をDFFに取り込む.次に,release文を使う事でforce文を解除する.

  1. module tb();
  2.  
  3. reg CLK;
  4. wire OUT;
  5.  
  6. always begin
  7. #5 CLK <= ~CLK;
  8. end
  9.  
  10. // dut
  11. DIV INST_DIV(
  12. .CLK(CLK),
  13. .OUT(OUT)
  14. )
  15.  
  16. initial begin
  17. CLK <= 1;
  18. force INST_DIV.invout=1;
  19. #10
  20. release INST_DIV.invout;
  21. end
  22. endmodule
  23.  
  24. module DIV(
  25. .CLK,
  26. .OUT
  27. );
  28. input CLK;
  29. output OUT;
  30. wire invout;
  31.  
  32. inverter(.A(OUT), .YB(invout));
  33. dff(.CLK(CLK), .DATA(invout), .Y(OUT));
  34.  
  35. endmodule

2017年7月13日木曜日

AnalogArtist のセルをSKILLコマンドでリネームする(ccpRename)

AnalogArtist 中のセルをリネームするには,ccpRenameコマンドを使う.
リネーム前,リネーム後のセルは,gdmSpecオブジェクトを指定する.従って以下の様に組み合わせてやればよい.

mySpecSrc = gdmCreateSpec("lib" "srcCellName" "view" nil "CDBA")
mySpecDst = gdmCreateSpec("lib" "dstCellName" "view" nil "CDBA")
ccpRename(mySpecSrc mySpecDst)

ここで,srcCellName がリネーム前のセルの名,dstCellNameがリネーム後のセル名,view 対応するview(layout/schematic/symbol...)である.