如何在SoC設(shè)計(jì)中使用事務(wù)處理(二)
建模、驗(yàn)證與調(diào)試需要統(tǒng)一標(biāo)準(zhǔn)的符號(hào)和框架,以便使架構(gòu)師和設(shè)計(jì)工程師能夠協(xié)同進(jìn)行復(fù)雜SoC的開(kāi)發(fā)。事務(wù)處理級(jí)模型(TLM)是進(jìn)行這種分析的理想模型,在片上系統(tǒng)(SoC)設(shè)計(jì)中使用事務(wù)處理級(jí)建模,可讓設(shè)計(jì)從高效率協(xié)同仿真和高產(chǎn)出的分析與調(diào)試中受益。
本文引用地址:http://www.ex-cimer.com/article/148679.htm 下面是對(duì)圖2所示的事務(wù)處理進(jìn)行建模的一個(gè)簡(jiǎn)單代碼段。這個(gè)類(lèi)的旨在于將事務(wù)處理數(shù)據(jù)記錄到作為trans_db instance dump_file類(lèi)的事務(wù)處理數(shù)據(jù)庫(kù)中。輸出被顯示在圖3最右部分。
// Inside program or some other OpenVera context
trans_db dump_file;
trans_stream stream1;
trans_type mem_read;
trans_handle h1;
// open a database file
dump_file=new(test);
// create the memory stream under the test.duv.bus scope
stream1=new(dump_file, test.duv.bus, memory);
// create the read transaction type in the memory stream
mem_read=new(stream1, Read);
// define 2 attributes in the read transaction type
mem_read.create_attr(Addr, INTEGER_DT);
mem_read.create_attr(Data, INTEGER_DT);
delay(10);
// begin a memory read transaction at 10
h1=mem_read.begin_now();
h1.log_integer_attr(Addr, 170);
h1.log_integer_attr(Data, 123);
delay(20);
// end h1 transaction at 20
h1.end_now();
// close the database file
dump_file.close();
評(píng)論