关于systemverilog:UVMC学习笔记四在SystemCC-layer的信息汇报控制

前言在uvmc中能够提供对uvm testbench根本档次信息的打印和信息打印级别的管制,管制过程能够systemC layer实现操作 一. UVM testbench topology 例化档次信息打印uvmc_print_topology(context,depth)参数阐明: context: 开始打印拓扑的组件的层次结构门路。如果未指定,则拓扑打印将从uvm_top开始。能够应用通配符(*和)指定多个组件,例如“top.env.* .driver”。可通过将contxt括在前斜杠中来指定POSIX扩大正则表达式,例如“/a[hp]b/”。默认值:" (uvm_top)、 depth:要打印的层次结构的级别数。如果没有指定,则打印从给定上下文开始的所有层次结构。默认值:-1(递归所有子元素) 例子: void top::show_uvm_print_topology(){ cout << endl << endl << "Waiting for UVM to reach build phase..." << endl; uvmc_wait_for_phase("build", UVM_PHASE_STARTED); cout << endl << endl << "Topology before build phase:" << endl; uvmc_print_topology(); uvmc_wait_for_phase("build", UVM_PHASE_ENDED); cout << endl << endl << "Topology after build phase:" << endl; uvmc_print_topology();}打印后果: Topology before build phase:UVM_INFO /home/shawntan/Project/uvmc/uvmc-2.3.2/src/connect/sv/uvmc_commands.sv(502) @ 0 ns: reporter [TRACE/UVMC_CMD/PRINT_TOPOLOGY] Topology for component uvm_top:----------------------------------------------------------------------Name Type Size Value----------------------------------------------------------------------<unnamed> uvm_root - @172 prod_out UVMC_PROXY_FOR_uvm_tlm_b_transport_port - @366 sb_actual_in UVMC_PROXY_FOR_uvm_analysis_export - @382 e env - @336 prod_out uvm_tlm_b_transport_port - @345 sb_actual_in uvm_analysis_export - @355 ---------------------------------------------------------------------- UVM_INFO /home/shawntan/Project/uvmc/uvmc-2.3.2/src/connect/sv/uvmc_commands.sv(208) @ 0 ns: reporter [UVMC_WAIT_FOR_PHASE] Waiting for phase 'build' to be 'UVM_EQ' to state 'UVM_PHASE_ENDED'. Currently its state is 'UVM_PHASE_EXECUTING'Topology after build phase:UVM_INFO /home/shawntan/Project/uvmc/uvmc-2.3.2/src/connect/sv/uvmc_commands.sv(502) @ 0 ns: reporter [TRACE/UVMC_CMD/PRINT_TOPOLOGY] Topology for component uvm_top:-----------------------------------------------------------------------------Name Type Size Value-----------------------------------------------------------------------------<unnamed> uvm_root - @172 prod_out UVMC_PROXY_FOR_uvm_tlm_b_transport_port - @366 sb_actual_in UVMC_PROXY_FOR_uvm_analysis_export - @382 e env - @336 prod producer - @402 analysis_out uvm_analysis_port - @422 out uvm_tlm_b_transport_port - @412 prod_out uvm_tlm_b_transport_port - @345 sb scoreboard - @432 actual_in uvm_analysis_imp - @441 exp_fifo uvm_tlm_analysis_fifo #(T) - @461 analysis_export uvm_analysis_imp - @510 get_ap uvm_analysis_port - @500 get_peek_export uvm_get_peek_imp - @480 put_ap uvm_analysis_port - @490 put_export uvm_put_imp - @470 expect_in uvm_analysis_export - @451 sb_actual_in uvm_analysis_export - @355 -----------------------------------------------------------------------------能够看到通过phase管制当前,build phase 前后所print 的testbench topology的构建档次后果存在显著的差别 ...

October 26, 2021 · 2 min · jiezi

关于systemverilog:UVMC学习笔记三在SystemCC作用域实现UVM-factory操作

前言UVMC 提供了一组API可用于在SystemC layer对UVM的组件factory进行拜访操作,用于档次打印,组件重载,调试,以及打印重载类型等等 组件打印:uvmc_print_factory(),传入参数当all_types为0时,只显示类型和实例笼罩。当all_types为1(默认值)时,所有注册的用户定义类型也会被打印进去,前提是它们具备与之关联的类型名称。(参数化类型通常不须要。)当all_types为2时,所有UVM类型(前缀为uvm_)都蕴含在注册类型列表中。组件重载uvmc_set_factory_type_override(request_type,override_type, context ) 设置类型笼罩uvmc_set_factory_inst_override(request_type,override_type, context) 设置指定类型实例笼罩所有被笼罩的类型必须要首先被工厂模式所注册参数阐明:request_type : 须要替换的原始类型override_type: 将要替换的指标类型, override_type 必须继承自request_typecontext: 用于实例替换,指明实例在仿真空间的档次 组件重载信息调试uvmc_debug_factory_create(requset_type, context)显示对于UVM factory将创立的对象类型的详细信息(给定申请的类型和上下文),列出指定context的利用的所有重载状况参数阐明与上文统一显示调试信息如下 Given a request for an object of type 'producer' with an instancepath of 'e.prod' the factory encounteredthe following relevant overrides. An 'x' next to a match indicates amatch that was ignored.Original Type Instance Path Override Type ------------- ------------- ------------- producer * producer_ext <type override>Result: The factory will produce an object of type 'producer_ext'(*) Types with no associated type name will be printed as <unknown>####UVM_INFO /home/shawntan/EDA/snps/vcs_2018.09/vcs-mx/O-2018.09/etc/uvm/src/base/uvm_factory.svh(1786) @ 0: reporter [UVM/FACTORY/DUMP] #### Factory Override Information (*)Given a request for an object of type 'scoreboard' with an instancepath of 'e.sb' the factory encounteredthe following relevant overrides. An 'x' next to a match indicates amatch that was ignored.Original Type Instance Path Override Type ------------- ------------- -------------- scoreboard e.* scoreboard_extResult: The factory will produce an object of type 'scoreboard_ext'(*) Types with no associated type name will be printed as <unknown>取得以后对象的理论重载类型string uvmc_find_factory_override(requeset_type, context)返回类型为context指明组件重载类型的字符串名字参数:request_type:为要创立的假如调用申请的类型名context: 发出请求的组件的层次结构门路。不容许通配符或正则表达式。上下文必须与现有组件的层次结构名称齐全匹配,或者能够是指定全局上下文的空字符串理论的操作成果如下:uvmc_set_type_override("B","C");uvmc_set_type_override("A","B");uvmc_set_inst_override("D", "C", "top.env.agent1.*"); ...

October 26, 2021 · 2 min · jiezi