My omnium-gatherom of scripts and source code.
at main 108 lines 2.5 kB view raw
1 2/********** Defines **************/ 3 4/* Get ra out of one byte regid field */ 5#define GET_RA(r) HI4(r) 6 7/* Get rb out of one byte regid field */ 8#define GET_RB(r) LO4(r) 9 10 11/************ Global state declaration ****************/ 12 13/* Determines whether running SEQ or SEQ+ */ 14extern int plusmode; 15 16/* Both instruction and data memory */ 17extern mem_t mem; 18 19/* Keep track of range of addresses that have been written */ 20extern word_t minAddr; 21extern word_t memCnt; 22 23/* Register file */ 24extern mem_t reg; 25/* Condition code register */ 26extern cc_t cc; 27/* Program counter */ 28extern word_t pc; 29 30/* For seq+ */ 31/* Results computed by previous instruction. 32 Used to compute PC in current instruction */ 33extern byte_t prev_icode; 34extern byte_t prev_ifun; 35extern word_t prev_valc; 36extern word_t prev_valm; 37extern word_t prev_valp; 38extern bool_t prev_bcond; 39 40/* Intermdiate stage values that must be used by control functions */ 41extern byte_t imem_icode; 42extern byte_t imem_ifun; 43extern byte_t icode; 44extern word_t ifun; 45extern word_t ra; 46extern word_t rb; 47extern word_t valc; 48extern word_t valp; 49extern bool_t imem_error; 50extern bool_t instr_valid; 51extern word_t vala; 52extern word_t valb; 53extern word_t vale; 54extern bool_t bcond; 55extern bool_t cond; 56extern word_t valm; 57extern bool_t dmem_error; 58extern byte_t status; 59 60/* Log file */ 61extern FILE *dumpfile; 62 63 64/* Sets the simulator name (called from main routine in HCL file) */ 65void set_simname(char *name); 66 67/* Initialize simulator */ 68void sim_init(); 69 70/* Reset simulator state, including register, instruction, and data memories */ 71void sim_reset(); 72 73/* 74 Run processor until one of following occurs: 75 - An status error is encountered 76 - max_instr instructions have completed 77 78 Return number of instructions executed. 79 if statusp nonnull, then will be set to status of final instruction 80 if ccp nonnull, then will be set to condition codes of final instruction 81*/ 82word_t sim_run(word_t max_instr, byte_t *statusp, cc_t *ccp); 83 84/* If dumpfile set nonNULL, lots of status info printed out */ 85void sim_set_dumpfile(FILE *file); 86 87/* 88 * sim_log dumps a formatted string to the dumpfile, if it exists 89 * accepts variable argument list 90 */ 91void sim_log( const char *format, ... ); 92 93 94/******************* GUI Interface Functions **********************/ 95#ifdef HAS_GUI 96 97void signal_register_clear(); 98 99void report_pc(word_t pc); 100 101void report_state(char *id, char *txt); 102 103void show_cc(cc_t cc); 104 105void create_memory_display(); 106void set_memory(word_t addr, word_t val); 107#endif 108