You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JasperGold报错ECK025:无效时钟声明问题求助

问题:JasperGold验证SystemVerilog设计时触发ECK025时钟声明错误

错误详情

ERROR (ECK025): Invalid clock declaration: "clk". Clock definition must be on an input or environmental stopat.
错误位置:/home/daileymn/Documents/Processor/test.tcl第12行

用户在课程学习中使用JasperGold验证开源SystemVerilog设计,加载TCL脚本时触发上述错误,查阅手册未找到解决方法。

相关代码

SystemVerilog核心问题模块(testbench)

module testbench(input clk,input reset);

// 错误:重复声明clk和reset为reg,覆盖端口输入属性
reg clk;
reg reset;
wire [7:0] result,OUT1,OUT2,Data2,mux1out,immediate,mux2out;
wire [2:0] Select;

initial
     $monitor("Res=%b O1=%b O2=%b D2=%b mux1=%b imm=%b mux2=%b S=%b clk=%b R=%b",result,OUT1,OUT2,Data2,mux1out,immediate,mux2out,Select,clk,reset);

proccessor myproccessor(result,OUT1,OUT2,Data2,mux1out,immediate,mux2out,Select,clk,reset);

initial
begin
    clk=1'b1;
    reset=0;
end

always #5 clk=~clk;

initial
begin
    #80 $finish;
end
endmodule

// 其余模块代码见用户提供完整内容

TCL脚本

# Clear all previous designs
clear -all

# Analyze design file and specification file
analyze -sv09 processor.sv
#analyze -sv09  counter_assertion.sv

# Elaborate design
elaborate -sv09_expression_mode -top testbench -disable_auto_bbox

# Specify reset and clock pins
clock clk
reset reset

问题原因

JasperGold的clock命令要求被声明为时钟的信号必须是顶层模块的输入端口,或是通过stopat约束的环境信号。但用户的testbench模块中,clk和reset被同时定义为模块输入和内部reg变量,违反SystemVerilog语法规则——端口声明后无需重复声明同名变量,重复声明会覆盖端口的输入属性,导致JasperGold elaborate后无法识别clk为合法顶层输入,触发ECK025错误。

修复方案

1. 修正SystemVerilog的testbench模块

删除模块内部重复声明的reg clk;和reg reset;,保留端口的input声明即可。修正后的核心代码如下:

module testbench(input clk,input reset);

// 移除重复的reg声明
wire [7:0] result,OUT1,OUT2,Data2,mux1out,immediate,mux2out;
wire [2:0] Select;

initial
     $monitor("Res=%b O1=%b O2=%b D2=%b mux1=%b imm=%b mux2=%b S=%b clk=%b R=%b",result,OUT1,OUT2,Data2,mux1out,immediate,mux2out,Select,clk,reset);

proccessor myproccessor(result,OUT1,OUT2,Data2,mux1out,immediate,mux2out,Select,clk,reset);

initial
begin
    clk=1'b1;
    reset=0;
end

always #5 clk=~clk;

initial
begin
    #80 $finish;
end
endmodule

2. 保持TCL脚本不变

修正SV代码后,原TCL脚本中的clock clk和reset reset命令可正确识别顶层输入端口,无需修改。

额外验证提示

  • 确认processor模块的端口连接顺序匹配(当前实例化顺序符合模块定义,无需调整)
  • 若后续仍有问题,可在elaborate后执行show design命令,查看顶层端口属性是否正确识别为输入

内容的提问来源于stack exchange,提问作者morgan dailey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 05:55:09