在打印的log中我们可以发现PCI2中“addrTop”和“dataTop”修改不会反映到PCI1,而对PCI2中对象PCIc的修改会反映到PCI1。 PCI2.PCIc.burstC = 8'h 9a; 这是因为shallow copy只复制了类中的对象句柄,而没有为对象PCI2.PCIc再次分配内存空间。 审核编辑:汤梓红 原文标题:SystemVerilog中的Shallow Copy 文章出处...
1 浅复制(shallow copy) 在SystemVerilog中,当一个class声明时会指定一个句柄handle(可以理解为其他语言中的指针),该句柄handle指向一块存储空间,该存储空间后续只能存放该class数据类型的数据。在没有对其进行任何操作之前,该handle相当于没有指向任何实际的数据对象,只有在使用了new函数之后,才会为其开辟具体的存储对...
SystemVerilog中的句柄赋值和对象复制的概念是有区别的。 PCI p1; p1 = new; PCI p2; p2 = p1; //class assignment 经过上面的代码执行后,“p1”和“p2” 最终指向的还是同一个内存空间,也就是说他们指向的是同一个对象实例。 如果你希望将p1的内容原封不同地复制到p2,他们就得是两个不同的对象实例,即...
在SystemVerilog面向对象编程中,只有在类句柄执行new()函数之后才会创建对象,分配内存空间。 代码语言:javascript 代码运行次数:0 运行 AI代码解释 packet pkt_1;pkt_1=new();packet pkt_2;pkt_2=newpkt_1; 在上面的代码中,创建了pkt_2对象,其中的属性(properties)复制自pkt_1对象,这就是浅复制(shallow copy...