没想到新版的工具这么强大,我以前编译都过不了,不过那时用的也不是正版的工具;之所以仿真与实际电路不符,那是因为你RTL描述的不是既带复位又带置位的寄存器,当然仿真结果与你实际电路不符合,仿真是根据RTL的语法来工作,综合工具会智能分析你设计意图;你可以用formal做下RTL VS netlist,估计会对比不过。如果不考虑实际电路情况,仅从SV语法分析,输出的变化点均应在always()的括号中表示,也就是b的变化并没有在always()中,所以当你b变化时,对输出不会产生影响;
总之,你并没有正确通过sv语法来表示你需要设计的电路,之所以综合出你想要的电路那完全是工具的功劳,就好像使用=来描述寄存器一样,仿真时大概率会出错,但综合出来的结果与<=操作是一样的。
你可以使用带复位和置位的寄存器描述来完成你的RTL设计,那样应该不会有问题的