kaushalmodi / custom_uvm_report_server Goto Github PK
View Code? Open in Web Editor NEWCustomized UVM Report Server
License: Apache License 2.0
Customized UVM Report Server
License: Apache License 2.0
In the included demo code, it seems the table_print_detected logic is never activated. The table that gets printed in producer.sv does not go through this custom_report_server at all, it seems.
I'm trying to understand what the intended behavior is. I tried modifying the producer.sv so it uses `uvm_info to print the table, like so:
`uvm_info("producer", $sformatf("Sending %s",p.get_name()), UVM_MEDIUM)
`uvm_info("scottj", p.sprint(), UVM_HIGH) // instead of p.print()
And now the table_print_detected logic is activated, but the output is a little messed up:
UVM_INFO @ 0ns Sending producer2-0 :producer
UVM_INFO @ 0ns ---------------------------------------
Name Type Size Value
---------------------------------------
producer2-0 packet - -
addr integral 32 'h1a
initiator producer #(T) -1 @1942
--------------------------------------- :scottj
top.producer2, producer.sv(69)
UVM_INFO @ 0ns Starting. :producer
As you can see, the first line is not lined up with the rest of the table. (Even with +UVM_REPORT_DEFAULT, it is similarly misaligned.)
I can see that without the table_print_detected logic, the word wrapping messes up the table far more, so it is useful, but I'm curious if this is really the intended behavior?
Using UVM 1.2, on the default uvm_report_server, I use the max_quit_count feature:
uvm_report_server report_server = uvm_report_server::get_server();
report_server.set_max_quit_count(3); // stop after 3 UVM_ERRORs reported
When I use your custom report server, the max quit count feature no longer seems to take effect. The simulation keeps reporting dozens of errors, until something else causes it to finish.
custom_report_server report_server;
report_server = new("report_server");
report_server.set_max_quit_count(3); // stop after 3 UVM_ERRORs reported
uvm_report_server::set_server(report_server);
I am assuming the set_server() call replaces the default server with the custom one. Yet, when I set the max_quit_count on the original one, before I replace it, this takes effect:
custom_report_server report_server;
uvm_report_server original_report_server = uvm_report_server::get_server();
original_report_server.set_max_quit_count(3); // stop after 3 UVM_ERRORs reported
report_server = new("report_server");
uvm_report_server::set_server(report_server);
Do you understand why this would work, and not the second one?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.