DataStructs.h
#ifndef _DATASTRUCS_H__
#define _DATASTRUCS_H__ #include <systemc.h>
#include "GlobalParams.h" ................省略内容 #endif
// Coord -- XY coordinates type of the Tile inside the Mesh
class Coord {
public:
int x; // X coordinate
int y; // Y coordinate
//操作符重载,调用方式if(c1 == c2)
//括号中的const表示参数coord对象不会被修改,最后的const表明调用函数对象不会被修改
inline bool operator ==(const Coord & coord) const {
return (coord.x == x && coord.y == y);
}};
class Coord
// FlitType -- Flit type enumeration
enum FlitType {
FLIT_TYPE_HEAD, FLIT_TYPE_BODY, FLIT_TYPE_TAIL
};

payload可以是flit,也可以是credit
// Payload -- Payload definition
struct Payload {
//sc_uint为无符号整数类型
sc_uint<> data; // Bus for the data to be exchanged inline bool operator ==(const Payload & payload) const {
return (payload.data == data);
}};
struct Payload
// Packet -- Packet definition
struct Packet {
int src_id;
int dst_id;
double timestamp; // SC timestamp at packet generation
int size;
int flit_left; // Number of remaining flits inside the packet
bool use_low_voltage_path; // Constructors
Packet() { } Packet(const int s, const int d, const double ts, const int sz) {
make(s, d, ts, sz);
}
//初始化packet
void make(const int s, const int d, const double ts, const int sz) {
src_id = s;
dst_id = d;
timestamp = ts;
size = sz;
flit_left = sz;
use_low_voltage_path = false;
}
};
struct Packet
// Flit -- Flit definition
struct Flit {
int src_id;
int dst_id;
FlitType flit_type; // The flit type (FLIT_TYPE_HEAD, FLIT_TYPE_BODY, FLIT_TYPE_TAIL)
int sequence_no; // The sequence number of the flit inside the packet
int sequence_length;
Payload payload; // Optional payload
double timestamp; // Unix timestamp at packet generation
int hop_no; // Current number of hops from source to destination
bool use_low_voltage_path;
//操作符重载
inline bool operator ==(const Flit & flit) const {
return (flit.src_id == src_id && flit.dst_id == dst_id
&& flit.flit_type == flit_type
&& flit.sequence_no == sequence_no
&& flit.sequence_length == sequence_length
&& flit.payload == payload && flit.timestamp == timestamp
&& flit.hop_no == hop_no
&& flit.use_low_voltage_path == use_low_voltage_path);
}};
struct Flit
// RouteData -- data required to perform routing
struct RouteData {
int current_id;
int src_id;
int dst_id;
int dir_in; // direction from which the packet comes from
};
struct RouteData
struct ChannelStatus {
int free_slots; // occupied buffer slots
bool available; //
inline bool operator ==(const ChannelStatus & bs) const {
return (free_slots == bs.free_slots && available == bs.available);
};
};
struct ChannelStatus
// NoP_data -- NoP Data definition Neighbor-on-Path
struct NoP_data {
int sender_id;
ChannelStatus channel_status_neighbor[DIRECTIONS]; inline bool operator ==(const NoP_data & nop_data) const {
return (sender_id == nop_data.sender_id &&
nop_data.channel_status_neighbor[] ==
channel_status_neighbor[]
&& nop_data.channel_status_neighbor[] ==
channel_status_neighbor[]
&& nop_data.channel_status_neighbor[] ==
channel_status_neighbor[]
&& nop_data.channel_status_neighbor[] ==
channel_status_neighbor[]);
};
};
struct NoP_data
typedef struct
{
string label;
double value;
} PowerBreakdownEntry;
enum
{
BUFFER_PUSH_PWR_D,
BUFFER_POP_PWR_D,
BUFFER_FRONT_PWR_D,
BUFFER_TO_TILE_PUSH_PWR_D,
BUFFER_TO_TILE_POP_PWR_D,
BUFFER_TO_TILE_FRONT_PWR_D,
BUFFER_FROM_TILE_PUSH_PWR_D,
BUFFER_FROM_TILE_POP_PWR_D,
BUFFER_FROM_TILE_FRONT_PWR_D,
ANTENNA_BUFFER_PUSH_PWR_D,
ANTENNA_BUFFER_POP_PWR_D,
ANTENNA_BUFFER_FRONT_PWR_D,
ROUTING_PWR_D,
SELECTION_PWR_D,
CROSSBAR_PWR_D,
LINK_R2R_PWR_D,
LINK_R2H_PWR_D,
NI_PWR_D,
WIRELESS_TX,
WIRELESS_DYNAMIC_RX_PWR,
WIRELESS_SNOOPING,
NO_BREAKDOWN_ENTRIES_D
}; enum
{
TRANSCEIVER_RX_PWR_BIASING,
TRANSCEIVER_TX_PWR_BIASING,
BUFFER_ROUTER_PWR_S,
BUFFER_TO_TILE_PWR_S,
BUFFER_FROM_TILE_PWR_S,
ANTENNA_BUFFER_PWR_S,
LINK_R2H_PWR_S,
ROUTING_PWR_S,
SELECTION_PWR_S,
CROSSBAR_PWR_S,
NI_PWR_S,
TRANSCEIVER_RX_PWR_S,
TRANSCEIVER_TX_PWR_S,
NO_BREAKDOWN_ENTRIES_S
};
enum
typedef struct
{
int size;
PowerBreakdownEntry breakdown[NO_BREAKDOWN_ENTRIES_D+NO_BREAKDOWN_ENTRIES_S];
} PowerBreakdown;
DataStructs.h的更多相关文章
- Buffer.h
#ifndef __NOXIMBUFFER_H__ #define __NOXIMBUFFER_H__ #include <cassert> #include <queue> ...
- ProcessingElement.h
processing element模块 #ifndef __NOXIMPROCESSINGELEMENT_H__ #define __NOXIMPROCESSINGELEMENT_H__ #incl ...
- Noxim Overview
PE+Router= Tile Node Architectural Elements: Buffer.h, Router.h, LocalRoutingTable.h, Tile.h, NoC.h, ...
- APUE中fcntl.h的使用及O_SYNC在Mac与Ubuntu下的测试
此部分测试涉及到APUE V3中,第三章的图3-12到图3-14. 通过fcntl.h提供的功能,修改fd的文件属性,本处增加O_SYNC功能,并测试其效果. 本文涉及代码: tree ch3 ch3 ...
- 关于apue.3e中apue.h的使用
关于apue.3e中apue.h的使用 近来要学一遍APUE第三版,并于此开博做为记录. 先下载源文件: # url: http://http//www.apuebook.com/code3e.htm ...
- YYModel 源码解读(二)之NSObject+YYModel.h (1)
本篇文章主要介绍 _YYModelPropertyMeta 前边的内容 首先先解释一下前边的辅助函数和枚举变量,在写一个功能的时候,这些辅助的东西可能不是一开始就能想出来的,应该是在后续的编码过程中 ...
- YYModel 源码解读(一)之YYModel.h
#if __has_include(<YYModel/YYModel.h>) FOUNDATION_EXPORT double YYModelVersionNumber; FOUNDATI ...
- error RC1015: cannot open include file 'afxres.h' 解决办法
在为WindowsPhone8程序添加本地化的过程中遇到这个问题: 问题原因就是afxres.h文件缺失,下载它,放到VS安装目录下的VS\include目录下就可以了(选择目录的时候注意对应对版本) ...
- afxcomctl32.h与afxcomctl32.inl报错
afxcomctl32.h与afxcomctl32.inl报错 编译公司一个几年前的老项目,是从VC6.0升级到VS2005的. 1.编译时报缺少头文件,于是附件包含目录,于是出现了以下报错: 1&g ...
随机推荐
- hadoop fs -text和hadoop fs -cat的区别(转)
转自:https://www.jianshu.com/p/4462613d3f57
- react-redux的使用
在react-redux 框架中,给我提供了两个常用的API来配合Redux框架的使用,其实在我们的实际项目开发中,我们完全可以不用react-redux框架,但是如果使用此框架,就如虎添翼了. 我们 ...
- 使用PLSQL导出表
前提是登录PLSQL的用户具有导出数据的权限 菜单Tools-->Export Tables
- Python设计模式 - UML - 通信图(Communication Diagram)
简介 通信图表示对象之间的消息往来,是表述时序图中信息交互的另一种UML图,介绍完时序图就要对照学习一下通信图,二者是一体两面的. 通信图和时序图可以相互转换,二者的侧重点不同,通信图侧重哪些对象发送 ...
- 【Spring学习】【Java基础回顾-数据类型】
Java基础回顾过程中,之前对于Java相关基础知识都是从这个人的博客看一些,那边的内容看一下,觉得不够系统化,决定用xmind脑图的形式,将Java基础知识回顾的作为一个系列,当前正在做的会包含: ...
- 19-02【mac电脑操作】最小化应用程序
最小化应用程序 windows下很简单,直接使用windows+M即可: mac电脑下,官方建议是:option+command+m+h.但实际使用的时候,这个快捷键并不好使: 解决方案:mac系统设 ...
- [剑指Offer]10-斐波那契数列(循环)-Java
题解 使用循环,时间复杂度O(n). 相关 跳台阶:f(n)=f(n-1)+f(n-2) 变态跳台阶:f(n)=2*f(n-1) 矩形覆盖:f(n)=f(n-1)+f(n-2) 全部用循环代替递归,使 ...
- vue动态绑定background:url绑不上的问题
场景: 利用swipper做轮播图,在联调的时候发现有些图片存在有些图片不存在 原因:图片路径中存在 (),和 background:url() 会冲突 解决方法: 一:oss图片路径避免出现括号 ( ...
- VUEX报 “was assigned to but it has no setter”
如果有当前的变量(VUEX声名的)会发生改变的(change),刚绑定的值需要在data () 内进行声明 一个新的变量进行处理.
- scrapy Mongodb 储存
pipelines.py # -*- coding: utf-8 -*- # Define your item pipelines here # # Don't forget to add your ...