既然用assign语句作为主结构, 说明你用的是组合电路, 这样不必定义reg, 也必然会出现竞争冒险. 如果只想看逻辑正确否不想看到毛刺, 只需把时序仿真改为功能仿真.
这种电路推荐用always做主结构, 即用时序电路实现. 这样仍需定义reg, 需要加个input clk.
always @(posedge clk)
begin
sum <= a+b;
cin <= a^b;
end
当然最好还加个rst输出,以产生完整的,有reg清0的电路, 实用可靠. 这样不论功能还是时序仿真都不会出竞争冒险了.
自带仿真器出现延时是正常的;你的设计用的是组合逻辑,容易产生竞争冒险,可以通过同步处理,加一个时钟,然后用D触发器输出,能解决毛刺问题
用assign的话sum和cout应该是线型(wire)的,你那定义的是reg型的,应该是这个问题,你试试看,欢迎追问!