场景描述--system verilog的场景搭建

Posted on 2024-04-09 23:14  绿叶落秋风  阅读(3)  评论(0编辑  收藏  举报

模板-V1

模型功能

  1. 建立场景的概念
  2. 实现场景的信号传输
  3. 明确场景的描述内容

模型框图

场景与实际情况的对应

实现步骤

场景的概念

  • 场景是仿真针对的情况的一种综合描述
  • 一般仿真场景和实际场景相对应,且由简单到复杂分布
  • 比如,从最理想的数据模型,到引入随机数的干扰模型,再到最后的实际场景采集数据的模型
  • 仿真场景就是逐步逼近实际应用场景的描述文件

场景信号传输的实现

  1. 总线信号的导入
  • 一个场景需要驱动整个逻辑的所有输入,所以需要使用上一章使用的总线去实现,以保证场景的稳定拓展
//  Class: video_scene_ideal
//
class video_scene_ideal;
    //  Group: Variables
    string name;
    virtual video_interface video_itf;
    
    //  Group: Constraints


    //  Group: Functions

    //  Constructor: new
    function new(
        string name = "video_scene_ideal",
        virtual video_interface video_itf
    );
        this.name = name;
        this.video_itf = video_itf; //get scene need itf to class
    endfunction: new
    extern task run_scene_single(
        input integer mode 
    );

endclass: video_scene_ideal
task video_scene_ideal::run_scene_single(
    input integer mode 
);
fork
    begin //note
    $display("--------------------------------------------------",name);
    $display("now run scene: %s ; task is run_scene_single ;",name);
    end 
    //add phase run 
    
join
endtask:run_scene_single

  1. 注册到public_libs.svh中
// ######################################################################
// lib include

`include "../public_interface/video_interface.sv"

// ######################################################################
// lib of scene
`include "../video_scene/video_scene_ideal.sv"

  • 必须在interface文件后面,因为后引入的文件可以调用先引入的文件
  1. 在顶层运行空场景
// --------------------------------------------------------------------
// add scene run 
string name;
video_scene_ideal sce_ideal;
initial 
begin
    #100
    name = "video_scene_ideal";
    $display("==========================================");
    $display("top: run scene is %s ;", name);
    sce_ideal = new(name,src_video_itf);
    
    #1000
    $display("==========================================");
    $display("top: run scene stop ;");
    $stop();
end

场景描述的内容

层次 负责的内容
top 调用场景,当仿真目标发生改变时,则新建场景
scene 调用驱动,并行运行各个部分,可以利用驱动进行复杂的排列组合,尽可能接近场景的复杂度
phase 驱动信号,提供某个总线的信号级别的控制,以满足场景拟合的需求

最终效果

提供场景描述的文件框架

  • 目前的场景规划由于缺少具体的模型,很难得到一个准确的划分
    • 暂时以单场景、多片段,多对象阶段的模型进行说明
      1. 单场景,即仿真场景始终处于理想场景
      2. 多片段,即在场景中分解出常见的关联阶段组成片段
      3. 多对象阶段,就是将总线的驱动在总线运行阶段进行细分,从而满足场景的调用需求
    • 保持1-n-n的结构,有利于增强仿真的适应性

调用接口

暂不更新,等内容更多时再更新