[Gems-users] some problems about writing SLICC


Date: Tue, 18 Aug 2009 22:30:55 +0800
From: "shanshuchang" <shanshuchang@xxxxxxxxx>
Subject: [Gems-users] some problems about writing SLICC
Hi all,
I am trying to add a new field in structure Entry which is defined in MOESI_CMP_directory-L1cache.sm:

    structure(Entry, desc="...", interface="AbstractCacheEntry") {
        State CacheState,        desc="cache state";
        bool Dirty,              desc="Is the data dirty (different than memory)?";
        DataBlock DataBlk,       desc="data for the block";
    
      // added 
        NodeID m_id,             desc="the processor related to the L1 cache";
       
int numofprocessors,      desc="the number of processors in the chip";
     
       }

(1)Can the NodeID be implicitly used in SLICC ? That is, can I directly use NodeID as a parameter in structure Entry? If not ,should I use MachineID as a parameter and then use function NodeID L1CacheMachIDToProcessorNum(MachineID machID) to convert it when needed?
 
(2)The NodeID is defined to be of type 'int'(ruby/system/NodeID.h),but when I use it as int in a comparator like this:
 
    NodeID id;
    id < 5; 
 
When I try to compiled the L1cache.sm, there are errors:

    ../protocols/MOESI_CMP_directory-L1cache.sm:282: Error: Type mismatch: left operand of operator '<=' expects input type 'int', actual was NodeID'
    make[1]: *** [generated/MOESI_CMP_directory/generated] Error 1
    make[1]: Leaving directory `/export/workspace/shanshuchang/gems/ruby'
How can I use NodeID as a 'int' type?
 
(3) How can I get the number of processors in slicc?

I am sorry for so much questions, but I want to step forward for my work...
Any help will be appreciated!
[← Prev in Thread] Current Thread [Next in Thread→]