基于蕴含运算符的双向约束多结果实现及代码正确性咨询
问题解答
先看你提供的约束代码:
constraint c_test{ (packet_size == LARGE) -> (Packet_length == 16); (Gap_betwn_packets == 2); }
这段代码不符合你的需求,具体原因如下:
- 分号把约束拆成了两个独立规则:
- 第一部分
(packet_size == LARGE) -> (Packet_length == 16)是正确的条件约束,仅当packet_size等于LARGE时,Packet_length会被限定为16; - 第二部分
(Gap_betwn_packets == 2)是全局约束,不管packet_size是什么值,Gap_betwn_packets都会被强制设为2,这和你“仅当packet_size为LARGE时才要求Gap为2”的需求不匹配。
- 第一部分
正确的写法是把两个变量的约束用逻辑与(&&)连接,放到箭头右侧,确保只有当packet_size == LARGE时,两个变量才会被约束:
constraint c_test{ (packet_size == LARGE) -> (Packet_length == 16 && Gap_betwn_packets == 2); }
修改后,当packet_size不等于LARGE时,Packet_length和Gap_betwn_packets不会被这部分约束限制,完全符合你的需求。
内容的提问来源于stack exchange,提问作者atniner
相关产品推荐
相关产品推荐

