mchwang233 / wmchappy_cn

评论库
0 stars 0 forks source link

计算芯片交流 - Gavin的碎碎念 #71

Open mchwang233 opened 1 year ago

mchwang233 commented 1 year ago

https://wmchappy.cn/2015/07/31/jsjl-compute/

CPU GPU XPU…

mchwang233 commented 1 week ago
#!/bin/python3
# -*-coding :utf-8 -*-
#========================================================================
# File           : comm.py
# Author         : Gavin
# Email          : wmchappy@outlook.com
# Data           : 2023-04-20\uff0cCreated
#
# Description    :
#
# Details        :
#
#=======================================================================

import sys

help_info = """
\033[36m====================================================================================================================\033[0m  
\033[34mHELP INFOMATION                                                                                                     \033[0m  
\033[36m====================================================================================================================\033[0m  
\033[34mDEFAULT MODE                                                                                                        \033[0m 
\033[36m--------------------------------------------------------------------------------------------------------------------\033[0m  
\033[34mIllustration:This mode is used in situations where projects generally                                               \033[0m 
\033[34mrequire generatingmodules of dummy files or generating multiple modules;                                            \033[0m 
\033[36m--------------------------------------------------------------------------------------------------------------------\033[0m  
\033[34mConfiguration Item :                                                                                                \033[0m 
\033[32m    1.-dbdir=      : specify DB(must specify)                   eg: -dbdir=/proj/sim/simv.daidir                    \033[0m 
\033[32m    2.-wave=       : specify wave(must specify)                 eg: -wave=/proj/sim/wave.fsdb                       \033[0m 
\033[32m    3.-delay_time= : the number of time after event trigered    eg: -delay_time=1000                                \033[0m 
\033[32m    4.-start_time= : the number of time before start wait event eg: -start_time=5000                                \033[0m 
\033[32m    5.-event=      : the event                                  eg: -event=tb_top.dut.a=1                           \033[0m 
\033[32m    6.-dummy_dir=  : the diretory                               eg: -dummy_dir=dummy                                \033[0m 
\033[32m    7.+hier=       : add the module's hierarchy                 eg: +hier=tb_top.dut.add +hier=tb_top.dut.kk.*      \033[0m 
\033[36m--------------------------------------------------------------------------------------------------------------------\033[0m  
\033[34mUsage:                                                                                                              \033[0m 
\033[34mFirstly you can use this command to add configuration like:                                                         \033[0m 
\033[32m    DummyGen -config -dbdir=/proj/sim/simv.dadir \\                                                                  \033[0m 
\033[32m    -wave=/proj/sim/wave.fsdb \\                                                                                     \033[0m 
\033[32m    -event=tb_top.dut.a=1 \\                                                                                         \033[0m 
\033[32m    -start_time=50000 \\                                                                                             \033[0m 
\033[32m    -delay_time=10000 \\                                                                                             \033[0m 
\033[32m    -dummy_dir=dummy \\                                                                                              \033[0m 
\033[32m    +hier=tb_top.dut.add +hier=tb_top.dut.kk.*                                                                      \033[0m 
\033[34mor like this:                                                                                                       \033[0m 
\033[32m    DummyGen -config -dbdir=/proj/sim/simv.dadir                                                                    \033[0m 
\033[32m    DummyGen -config -wave=/proj/sim/wave.fsdb                                                                      \033[0m 
\033[32m    DummyGen -config -event=tb_top.dut.a=1                                                                          \033[0m 
\033[32m    DummyGen -config -start_time=50000                                                                              \033[0m 
\033[32m    DummyGen -config -delay_time=10000                                                                              \033[0m 
\033[32m    DummyGen -config -dummy_dir=dummy                                                                               \033[0m 
\033[32m    DummyGen -config +hier=tb_top.dut.add +hier=tb_top.dut.kk.*                                                     \033[0m 
\033[34mthan you can generate the dummy files use this command:                                                             \033[0m 
\033[32m    DummyGen -default                                                                                               \033[0m 
\033[34m***important message***                                                                                             \033[0m 
\033[34m    1.These configration only need add once time if you don't have new requirements                                 \033[0m 
\033[34m    2.This mode can configurate multiple hierarchise, the hierarchise information will be coverd in next config     \033[0m 
\033[34m    command which with +hier= ,so that multiple hierarchise must in on line command like :                          \033[0m 
\033[34m    DummyGen -config +hier=tb_top.dut.add +hier=tb_top.dut.kk, this command will add two hierarchise to             \033[0m 
\033[34m    configrations and cover last time hierarchise configrations                                                     \033[0m 
\033[34m    3.if you want to clean configrations,you can use this command: DummyGen -clear , however, this command will     \033[0m 
\033[34m    not clean hierarchise configrations                                                                             \033[0m 
\033[34m    4.if you want to know all configrations, you can use that: DummyGen -config                                     \033[0m 
\033[36m====================================================================================================================\033[0m  
\033[34mFREEDOM MODE                                                                                                        \033[0m 
\033[36m--------------------------------------------------------------------------------------------------------------------\033[0m  
\033[34mIllustration:This mode is mainly used to flexibly generate dummies, and only one hierarchy can be                   \033[0m 
\033[34mspecified at a time;                                                                                                \033[0m 
\033[36m--------------------------------------------------------------------------------------------------------------------\033[0m  
\033[34mUsage:                                                                                                              \033[0m 
\033[34mfirstly, you must configration dbdir and wave:                                                                      \033[0m 
\033[32m    DummyGen -config -dbdir=/proj/sim/simv.dadir                                                                    \033[0m 
\033[32m    DummyGen -config -wave=/proj/sim/wave.fsdb                                                                      \033[0m 
\033[34mthan you can generate the dummy file like this command:                                                             \033[0m 
\033[32m    DummyGen -sphier=tb_top.dut.kk.*  -start_time=4000 -delay_time=500 -event=tb_top.dut.a=1                        \033[0m 
\033[34mor like this:                                                                                                       \033[0m 
\033[32m    DummyGen -sphier=tb_top.dut.kk.add -delay_time=500                                                              \033[0m 
\033[36m====================================================================================================================\033[0m  
"""

def print_spc(sphier,event,start_time,delay_time,dummydir):
    print("\n\033[34m"+"=============================="+"\033[0m")
    print(  "\033[34m"+">=  START FREEDOM MODE GEN  =<"+"\033[0m")
    print(  "\033[34m"+"=============================="+"\033[0m\n")

    print("\033[32m"+"=======CFG INFO======="+"\033[0m\n") 
    print("\033[32m"+"sphier="+sphier+"\033[0m")
    print("\033[32m"+"event="+event+"\033[0m")
    print("\033[32m"+"start_time="+str(start_time)+"\033[0m")
    print("\033[32m"+"delay_time="+str(delay_time)+"\033[0m")
    print("\033[32m"+"dummydir"+dummydir+"\033[0m")
    print("\n\033[32m"+"======================"+"\033[0m\n") 

def do_help():
    print(help_info)

def can_find(llist,key):
    for index in llist:
        if key in index:
            return True
            break
    return False

def do_config(cfg_list):
    hier_list=[]
    dbdir=""
    wave=""
    delay_time = "0"
    start_time = "0"
    dummydir = "./"
    event = "no"

    hire_list_en = 0
    dummydir_en = 0
    delay_en  = 0
    start_en = 0
    event_en = 0
    dbdir_en = 0
    wave_en = 0
    clear_en = 0

    for part in cfg_list:
        if hier_list.count(part.replace("+hier=","")) == 0 \
           and "+hier=" in part: 
            hire_list_en = 1
            hier_list.append(part.replace("+hier=",""))
        if "-dbdir=" in part:
            dbdir = part.replace('-dbdir=','')
            dbdir_en = 1
        if "-wave="  in part:
            wave = part.replace('-wave=','')
            wave_en = 1
        if "-delay_time=" in part:
            delay_time = part.replace('-delay_time=','')
            delay_en  = 1
        if "-start_time=" in part:
            start_time = part.replace('-start_time=','')
            start_en = 1
        if "-event=" in part:
            event = part.replace('-event=','')
            event_en = 1
        if "-dummydir=" in part:
            dummydir = part.replace('-dummydir=','')
            dummydir_en = 1
        if "-clear" in part:
            clear_en = 1
    fh=open(sys.path[0]+"/hier.list","a+")
    if hire_list_en == 1:
        fh.truncate(0)
        for value in hier_list:
            fh.writelines(value+"\n")
    fh.close()
    fc=open(sys.path[0]+"/cfg.list","r")
    clines = fc.readlines()
    fc.close()
    fc=open(sys.path[0]+"/cfg.list","a+")
    fc.truncate(0)

    if clear_en == 1:
        fc.writelines("dbdir="+dbdir+"\n")
        fc.writelines("wave="+wave+"\n")
        fc.writelines("delay_time="+delay_time+"\n")
        fc.writelines("start_time="+start_time+"\n")
        fc.writelines("event="+event+"\n")
        fc.writelines("dummydir="+dummydir+"\n")

        fc.close()
        fc=open(sys.path[0]+"/cfg.list","r")
        clines = fc.readlines()
        print("\n\033[32m=================cfg information==============\033[0m\n")
        for line in clines:
            print(line.replace("\n",""))
        print("\n\033[32m=====end display=====.........................\033[0m\n")
        fc.close()

        fh=open(sys.path[0]+"/hier.list","r")
        hlines = fh.readlines()
        print("\n\033[32m================hier information===============\033[0m\n")
        for line in hlines:
            print(line.replace("\n",""))
        print("\n\033[32m=====end display=====..........................\033[0m\n")
        fh.close()
        return 

    for line in clines:
        if "dbdir=" in line:
            dbdir_line = line
        if "wave="  in line:
            wave_line = line
        if "delay_time=" in line:
            delay_line = line
        if "start_time=" in line:
            start_line = line
        if "event=" in line:
            event_line = line
        if "dummydir=" in line:
            dummydir_line = line

    #print(can_find(clines,"dbdir="))

    if dbdir_en == 1 or not can_find(clines,"dbdir="):
        fc.writelines("dbdir="+dbdir+"\n")
    else:
        fc.writelines(dbdir_line)
    if wave_en == 1 or not can_find(clines,"wave="):
        fc.writelines("wave="+wave+"\n")
    else:
        fc.writelines(wave_line)
    if delay_en == 1 or not can_find(clines,"delay_time="):
        fc.writelines("delay_time="+delay_time+"\n")
    else:
        fc.writelines(delay_line)
    if start_en == 1 or not can_find(clines,"start_time="):
        fc.writelines("start_time="+start_time+"\n")
    else:
        fc.writelines(start_line)
    if event_en == 1 or not can_find(clines,"event="):
        fc.writelines("event="+event+"\n")
    else:
        fc.writelines(event_line)
    if dummydir_en == 1 or not can_find(clines,"dummydir="):
        fc.writelines("dummydir="+dummydir+"\n")
    else:
        fc.writelines(dummydir_line)

    fc.close()

    fc=open(sys.path[0]+"/cfg.list","r")
    clines = fc.readlines()
    print("\n\033[32m=================cfg information==============\033[0m\n")
    for line in clines:
        print(line.replace("\n",""))
    print("\n\033[32m=====end display=====.........................\033[0m\n")
    fc.close()

    fh=open(sys.path[0]+"/hier.list","r")
    hlines = fh.readlines()
    print("\n\033[32m================hier information===============\033[0m\n")
    for line in hlines:
        print(line.replace("\n",""))
    print("\n\033[32m=====end display=====..........................\033[0m\n")
    fh.close()
mchwang233 commented 1 week ago
#!/bin/python3
# -*-coding :utf-8 -*-
#========================================================================
# File           : DummyGen.py
# Author         : Gavin
# Email          : wmchappy@outlook.com
# Data           : 2023-04-20\uff0cCreated
#
# Description    :
#
# Details        :
#
#=======================================================================

import re
import sys
import os
import comm
import hier_load

is_config = 0
is_help   = 0
is_sphier = 0
is_default = 0
start_time = 0
delay_time = 0

time = 0
event = "no"

dummydir = "./"

def do_config(cfg_list):
    comm.do_config(cfg_list)

def do_help():
    comm.do_help()

def do_hier():
    hier_load.do_hier()

def do_one_hier(hier,event,start_time,delay_time,dummydir):
    hier_load.do_one_hier(hier,event,start_time,delay_time,dummydir)

cfg_list = sys.argv

for argv in sys.argv:
    if "-config" == argv or "-clear" == argv:
        is_config = 1
    if "-help" == argv:
        is_help = 1
    if "-sphier=" in argv:
        is_sphier = 1
        sphier = (argv.replace('-sphier=','')).strip()
    if "-start_time=" in argv:
        start_time  = int(argv.replace('-start_time=',''))
    if "-delay_time=" in argv:
        delay_time  = int(argv.replace('-delay_time=',''))
    if "-event=" in argv:
        event = (argv.replace('-event=','')).strip()
    if "-dummydir=" in argv:
        dummydir = (argv.replace('-dummydir=','')).strip()
    if "-default" == argv:
        is_default = 1

if is_config == 1:
    do_config(cfg_list)
elif is_help == 1:
    do_help()
elif is_sphier == 1:
    comm.print_spc(sphier,event,start_time,delay_time,dummydir)
    do_one_hier(sphier,event,start_time,delay_time,dummydir)
    print("\n\033[34m"+"=============================="+"\033[0m")
    print(  "\033[34m"+">=        GEN SUCCESS       =<"+"\033[0m")
    print(  "\033[34m"+"=============================="+"\033[0m\n")
elif is_default == 1:
    print("\n\033[34m"+"=============================="+"\033[0m")
    print(  "\033[34m"+">=  START DEFAULT MODE GEN  =<"+"\033[0m")
    print(  "\033[34m"+"=============================="+"\033[0m\n")
    do_hier()
    print("\n\033[34m"+"=============================="+"\033[0m")
    print(  "\033[34m"+">=     GEN ALL SUCCESS      =<"+"\033[0m")
    print(  "\033[34m"+"=============================="+"\033[0m\n")
else :
    print("Error:No item Get")
mchwang233 commented 1 week ago
#!/bin/python3
# -*-coding :utf-8 -*-
#========================================================================
# File           : filegen.py
# Author         : Gavin
# Email          : wmchappy@outlook.com
# Data           : 2023-04-20\uff0cCreated
#
# Description    :
#
# Details        :
#
#=======================================================================

import os

def gen_file(signalList,valueList,paramList,module,path="") :
    if not os.path.exists(path):
        os.makedirs(path)
    first_line = 1
    fg=open(path+"/"+module+".sv","a+")
    fg.truncate(0)
    line = "module "+module+" ("
    fg.writelines(line+"\n")
    tplt_dou = "{:<10}"
    tplt = "{:<10}\t{:<10}\t{:<10}\t{:<20}\t{:<10}"
    tp_sigvalue = "{:<20}\t{:<5}\t{:<10}\t{:<10}"
    for signal in signalList:
        #print(type(signal.direction(False)))
        if signal.direction(False) == "npiFsdbDirInput":
            direct = "input"
        elif signal.direction(False) == "npiFsdbDirOutput":
            direct = "output"
        elif signal.direction(False) == "npiFsdbDirInout":
            direct = "inout"
        else: 
            direct = "no"
        if direct != "no" :
            mb_str = " "
            if signal.has_member() :
                sigList = signal.member_list()
                mb_str = "["+str(len(sigList))+"-1:0]"
            if first_line==1:
                line = "    "+tplt.format(direct,"wire","["+str(signal.left_range())+":"+str(signal.right_range())+"]",signal.name(),mb_str)
                first_line = 0
            else:
                line = tplt_dou.format(",")+"\n"+"    "+tplt.format(direct,"wire","["+str(signal.left_range())+":"+str(signal.right_range())+"]",signal.name(),mb_str)
            fg.writelines(line)
    line=("\n"+");")
    fg.writelines(line+"\n")
    for param in paramList :
        line="    parameter "+param+"=0;"     
        fg.writelines(line+"\n")
    for sig_value in valueList :
        line = "    assign "+ tp_sigvalue.format(sig_value[0],"=",sig_value[1],";")
        fg.writelines(line+"\n")

    fg.writelines("endmodule")
mchwang233 commented 1 week ago
#!/bin/python3
# -*-coding :utf-8 -*-
#========================================================================
# File           : hier.py
# Author         : Gavin
# Email          : wmchappy@outlook.com
# Data           : 2023-04-20\uff0cCreated
#
# Description    :
#
# Details        :
#
#=======================================================================

import os
import re
import sys
import filegen

rel_lib_path = os.environ['VERDI_HOME'] + '/share/NPI/python'
sys.path.append(os.path.abspath(rel_lib_path))
from pynpi import npisys
from pynpi import waveform
from pynpi import lang
from pynpi import text

def get_dbdir():
    get_ok = 0
    fc=open(sys.path[0]+"/cfg.list","r")
    cfg_list=fc.readlines()
    for cfg in cfg_list:
        if "dbdir=" in cfg:
            cfg=cfg.replace("dbdir=","")
            cfg=cfg.replace("\n","")
            get_ok = 1
            break
    if get_ok == 0:
        return "simv.daidir"
    else:
        return cfg

def get_wave():
    get_ok = 0
    fc=open(sys.path[0]+"/cfg.list","r")
    cfg_list=fc.readlines()
    for cfg in cfg_list:
        if "wave=" in cfg:
            cfg=cfg.replace("wave=","")
            cfg=cfg.replace("\n","")
            get_ok = 1
            break
    if get_ok == 0:
        return "wave.vf"
    else:
        return cfg

def get_hier_info(waveHandle,HierName,event,start_time=0,delay_time=0,dummydir="./"):
    paramList = []
    valueList = []
    event_time = 0
    event_str = "" 
    event_strl = re.findall("^(.*?)=",event)
    event_str   = "".join(event_strl)
    value_strl = re.findall("=(.*?)$",event)
    value_str = "".join(value_strl)
    scope = waveHandle.scope_by_name(HierName)
    if not scope :
        print("\033[31m"+"Please Check Your Hier, Don't Have This Hier In Your Design"+"\033[0m")  
        return
    module_name=scope.def_name()
    fileHdl = text.file_by_module_name(module_name)
    file_path=fileHdl.file_full_name()
    file_name=fileHdl.file_name()
    signalList=scope.sig_list()

    inst_hdl = lang.handle_by_name(HierName, None)
    para_hdl_list = inst_hdl.parameter_handles()
    for hdl in para_hdl_list:    
        hdl_info_list=lang.get_hdl_info(hdl).split(",")
        paramList.append(hdl_info_list[1].replace(HierName+".",""))
    start_time = waveform.convert_time_in(waveHandle, start_time, "ns")
    if event != "no":
        event_time = waveform.sig_find_value_forward(waveHandle,event_str,value_str, start_time , waveform.VctFormat_e.HexStrVal)
        print("    \033[34m"+"!!!---EVENT TRIGGERED---!!! TIME IS : " + str(event_time) +"fs"+"\033[0m",end="")
    else:
        event_time = start_time
    time_unit = waveform.time_scale_unit(waveHandle)    
    delay_time = waveform.convert_time_in(waveHandle, delay_time, "ns")
    for signal in signalList :
        keylist = []
        if signal.direction(False) == "npiFsdbDirOutput":
            if signal.has_member() :
                memList = signal.member_list()
                #print(len(memList))
                for i in range(0,len(memList)):
                    keylist = []
                    value = waveform.sig_value_at(waveHandle,HierName+"."+signal.name()+"["+str(i)+"]",event_time+delay_time, waveform.VctFormat_e.HexStrVal)
                    keylist.append(signal.name()+"["+str(i)+"]")
                    keylist.append("\'h"+value)
                    valueList.append(keylist)
            else:
                value = waveform.sig_value_at(waveHandle,HierName+"."+signal.name(),event_time+delay_time, waveform.VctFormat_e.HexStrVal)
                keylist.append(signal.name())
                keylist.append("\'h"+value)
                valueList.append(keylist)

    filegen.gen_file(signalList,valueList,paramList,module_name,dummydir)

def do_one_hier(hier,event,start_time,delay_time,dummydir):
    dbdir = get_dbdir()
    wave  = get_wave()
    argv_list = []
    argv_list.append("-dbdir") 
    argv_list.append(dbdir) 
    hier_list = []

    if not npisys.init(argv_list):
        print("Warning: Fail to initialize NPI.")
        argv_list.remove(dbdir)
        argv_list.append("simv.daidir")
        if not npisys.init(argv_list):
            print("Error: Fail to initialize NPI.")
            assert 0

    if not npisys.load_design(argv_list):
        print("Warning: Fail to load design.")
        argv_list.remove(dbdir)
        argv_list.append("./simv.daidir")
#        for argv in argv_list:
#            print(argv)
        if not npisys.init(argv_list):
            print("Error: Fail to load design.")
            assert 0

    waveHandle = waveform.open(wave)

    if "*" not in hier:
        print("\n\033[34m"+"Start Gen this hier:"+hier+"\033[0m",end="")
        get_hier_info(waveHandle,hier,event,start_time,delay_time,dummydir)
    else:
        parent_hier=hier.replace(".*","")
        scope = waveHandle.scope_by_name(parent_hier)
        scopeList = scope.child_scope_list()
        for ch_scope in scopeList :
            if ch_scope.type(False)=="npiFsdbScopeSvModule":
                print("\n\033[34m"+"Start Gen this hier:"+ch_scope.full_name()+"\033[0m",end="")
                get_hier_info(waveHandle,ch_scope.full_name(),event,start_time,delay_time,dummydir)
    print("\033[34m"+"       Gen Success"+"\033[0m")  
    npisys.end()

def do_hier():

    delay_time = 0
    start_time = 0

    fh=open(sys.path[0]+"/hier.list","r")
    fc=open(sys.path[0]+"/cfg.list","r")

    clines=fc.readlines()

    print("\033[32m==========You will gen module(s) file which use these cfg:\033[0m\n")
    for line in clines:
        print(line.replace("\n",""))
    print("\n\033[32m==========\033[0m\n")
    for line in clines:
        if "delay_time=" in line:
            delay_time = int(line.replace("delay_time=",""))
        if "start_time=" in line:
            start_time = int(line.replace("start_time=",""))
        if "event=" in line:
            event = (line.replace("event=","")).strip()
        if "dummydir=" in line:
            dummydir = (line.replace('dummydir=','')).strip()

    lines=fh.readlines()
    print("\033[32m=========You will gen module(s) file which use these hier:\033[0m\n")
    for line in lines:
        print(line.replace("\n",""))
    print("\n\033[32m=========\033[0m\n")

    print("\n\033[34m                       ...\033[0m")
    print("\033[34m=========              ......\033[0m")
    print("\033[34m========= START GEN ALL..........\033[0m")
    print("\033[34m=========              ......\033[0m")
    print("\033[34m                       ...\033[0m \n")
    for line in lines:
        hier = line.replace("\n","")
        do_one_hier(hier,event,start_time,delay_time,dummydir)
mchwang233 commented 1 week ago

dbdir=TMP_SIM/xp5_top/default/smoke.tcs/simv.daidir wave=TMP_SIM/xp5_top/default/smoke.tcs/wave.fsdb delay_time=1000 start_time=0 event=no dummydir=dummy_db

mchwang233 commented 1 week ago

sim_top.uchip_top.uAI_XP5_TOP.uAI_LOGIC_TOP.uxvss_cluster.u_xvss_cfe_top sim_top.uchip_top.uAI_XP5_TOP.uAI_LOGIC_TOP.uxvss_cluster.u_xvss_cpb_top sim_top.uchip_top.uAI_XP5_TOP.uAI_LOGIC_TOP.uxvss_cluster.u_xvss_cpostp_top sim_top.uchip_top.uAI_XP5_TOP.uAI_LOGIC_TOP.uxvss_cluster.u_xvss_cse_top sim_top.uchip_top.uAI_XP5_TOP.uAI_LOGIC_TOP.uxvss_cluster.u_xvss_vpu_top sim_top.uchip_top.uAI_XP5_TOP.uAI_LOGIC_TOP.uAI_IC_WRAP_E sim_top.uchip_top.uAI_XP5_TOP.uAI_LOGIC_TOP.uAI_IC_WRAP_SE sim_top.uchip_top.uAI_XP5_TOP.uAI_LOGIC_TOP.uAI_IC_WRAP_SW sim_top.uchip_top.uAI_XP5_TOP.uAI_LOGIC_TOP.uAI_IC_WRAP_W sim_top.uchip_top.uAI_XP5_TOP.uAI_LOGIC_TOP.uMEDIASS.uBKISP_WRAP sim_top.uchip_top.uAI_XP5_TOP.uAI_LOGIC_TOP.uMEDIASS.uMIPITX_DP_WRAP sim_top.uchip_top.uAI_XP5_TOP.uAI_LOGIC_TOP.uMEDIASS.uVD_WRAP sim_top.uchip_top.uAI_XP5_TOP.uAI_LOGIC_TOP.uMEDIASS.uVE_WRAP_0 sim_top.uchip_top.uAI_XP5_TOP.uAI_LOGIC_TOP.uHSPSS_WRAP.uHSPSS.uETHER_WRAP_0 sim_top.uchip_top.uAI_XP5_TOP.uAI_LOGIC_TOP.uHSPSS_WRAP.uHSPSS.uPCIE_WRAP_0 sim_top.uchip_top.uAI_XP5_TOP.uAI_LOGIC_TOP.uHSPSS_WRAP.uHSPSS.uUSB_WRAP sim_top.uchip_top.uAI_XP5_TOP.uAI_LOGIC_TOP.uHSPSS_WRAP.uHSPSS.uUFS_WRAP sim_top.uchip_top.uAI_XP5_TOP.uAI_LOGIC_TOP.uHSPSS_WRAP.uSMMU_HSP sim_top.uchip_top.uAI_XP5_TOP.uAI_LOGIC_TOP.uAPSS_WRAP.uSMMU_HSP_APSS sim_top.uchip_top.uAI_XP5_TOP.uAI_LOGIC_TOP.uAPSS_WRAP.uAPSS_TOP sim_top.uchip_top.uAI_XP5_TOP.uAI_LOGIC_TOP.uNPC_WRAP0.unpc_top sim_top.uchip_top.uAI_XP5_TOP.uAI_LOGIC_TOP.uHSPSS_WRAP.uHSPSS sim_top.uchip_top.uAI_XP5_TOP.uAI_LOGIC_TOP.uDDRSS_L sim_top.uchip_top.uAI_XP5_TOP.uAI_LOGIC_TOP.uGPUSS sim_top.uchip_top.uAI_XP5_TOP.uAI_LOGIC_TOP.uMEDIASS sim_top.uchip_top.uAI_XP5_TOP.uAI_LOGIC_TOP.uMIPIRXSS sim_top.uchip_top.uAI_XP5_TOP.uAI_LOGIC_TOP.uSCP_TOP sim_top.uchip_top.uAI_XP5_TOP.uAI_LOGIC_TOP.uSSPSS sim_top.uchip_top.uAI_XP5_TOP.uAI_LOGIC_TOP.ucvc_subsys sim_top.uchip_top.uAI_XP5_TOP.uAI_LOGIC_TOP.uxvss_cluster sim_top.uchip_top.uSI_XP5_TOP.uSI_LOGIC_TOP.uSPU_TOP