VCSのtimescaleに関するエラーを消したいとき
Synopsys社のVCSで回路の動作検証をしようとしていたときに以下のエラーがでてきて困った.
Error-[ITSFM] Illegal `timescale for module tb_dcstped_b01.v, 2 Module "tb_b01" has `timescale but previous module(s) do not. Please refer LRM 1364-2001 section 19.8.
このエラー,どうやら回路記述の読み込みの順番が問題らしい.
エラーがでているときは,テストベンチ記述(tb_dcstped_b02.v)を後ろから二番目に読み込むようにしていた.
vcs -full64 -v ~/Scripts/Libraries/nangate.v tb_dcstped_b02.v dcstped_b02.v -R
これを以下のように一番最初に読み込むようにしてあげると,上手いことシミュレーションできた.
vcs -full64 tb_dcstped_b02.v -v ~/Scripts/Libraries/nangate.v dcstped_b02.v -R
追記1
.vファイルにtimescaleの指定がない場合にも同様のエラーが出た. その時は.vファイルに`timescale 1ns/1ns などとするとエラーが回避できた.
追記2
サブモジュールをインクルードしてる場合,timescaleを先に書かなければ同様のエラーが出る. 以下が間違った例.
`include "aaa.v" `timescale 1ns/1ns
以下のようにするとエラー回避できる.
`timescale 1ns/1ns `include "aaa.v"