私はUART検証環境を構築しています。 DUT UARTのRxにフレームを駆動するためvr_ad_sequence
Specman e:シーケンスがそのBFMを駆動し、そのMAINがテストで定義されていない
uart_sequence
両方の配列、それらのドライバとのBFMは正常に動作DUTのUARTの設定を駆動するため
- : 私は2 sequencesesを持っています。 しかし、構成シーケンスのみを使用する簡単なテストを作成した場合、DUT UART Rxは検証環境によって駆動されます(また、
MAIN uart_sequence
の拡張はありません)!// The test that drives ALSO uart_sequence extend MAIN vr_ad_sequence { // Configuration sequence body()@driver.clock is only { // Configuration logic }; };
私はRxが駆動されるように停止することに成功した唯一の方法は
MAIN uart_sequence body()
を「上書き」することです:テストはこのようになります。ここ// The test that does not drives UART Rx extend MAIN uart_sequence { // Rx sequence body() @driver.clock is only { }; }; extend MAIN vr_ad_sequence { // Configuration sequence body()@driver.clock is only { // Configuration logic }; };
はどのようにUART Rxの配列であり、ドライバとBFMは、検証環境で定義されています。
sequence uart_sequence using item = uart_frame_s, created_driver = uart_driver_u; extend uart_driver_u { event clock is only rise(port_clk$) @sim; }; extend uart_rx_agent_u { driver: uart_driver_u is instance; }; extend uart_rx_agent_u { uart_monitor : uart_rx_monitor_u is instance; // like uvm_monitor uart_bfm : uart_rx_bfm_u is instance; // like uvm_bfm }; extend uart_rx_bfm_u { !cur_frame: uart_frame_s; run() is also { start execute_items(); }; execute_items() @rx_clk is { while (TRUE) do{ cur_frame = p_agent.driver.get_next_item(); drive_frame(cur_frame); }; }; drive_frame(cur_frame : uart_frame_s) @rx_clk is { // Drive frame logic }; };
あなたが
uart_sequence
はそのMAIN
が延長されなかった場合でも、そのBFMを駆動する理由を任意のアイデアを持っていますか?例示及び説明の状態があるSpecmanのドキュメントであなたの助け