public :
enum IfaceWidthType { Expression = 1, Boolean, Natural, Inherited}; //! Inherited is only for Group interface
+ enum IfaceWidthDir { LittleEndian = 1, BigEndian}; //! LittleEndian = X downto 0, BigEndian = 0 to X
enum IfacePurpose { AnyPurpose = 0, Data = 1, Control, Clock, Reset, Wishbone };
enum IfaceDirection { AnyDirection = 0, Input = 1, Output = 2, InOut = 3 };
- enum IfaceVHDLContext {AnyContext = 0, Entity = 1, Component = 2, Architecture = 3 }; // NB : 3 is when creating an instance of the block that owns this iface
+ enum IfaceVHDLContext {AnyContext = 0, Entity = 1, Component = 2, Architecture = 3, Signal = 4 }; // NB : 3 is when creating an instance of the block that owns this iface
enum IfaceVHDLFlags { NoComma = 1 };
static int getIntDirection(QString str);
static int getIntPurpose(QString str);
AbstractInterface(AbstractBlock* _owner);
- AbstractInterface(AbstractBlock* _owner, const QString& _name, const QString& _type, const QString& _width, int _direction, int _purpose);
+ AbstractInterface(AbstractBlock* _owner, const QString& _name, int _direction, int _purpose, const QString& _type, const QString& _width, int _endianess = LittleEndian);
AbstractInterface(AbstractInterface* other);
virtual ~AbstractInterface();
inline QString getName() { return name;}
inline int getType() { return type; }
QString getTypeString();
- inline QString getWidth() { return width;}
+ inline int getEndianess() { return endianess; }
+ QString getEndianessString();
+ inline QString getWidthString() { return width;}
+ virtual int getWidth(); // return -1 if size cannot be determine
inline int getPurpose() { return purpose;}
QString getPurposeString();
inline int getDirection() { return direction;}
// setters
inline void setOwner(AbstractBlock* _owner) { owner = _owner; }
- inline void setName(const QString& _name) { name = _name; }
+ void setName(const QString& _name);
inline void setWidth(const QString& _width) { width = _width; }
inline void setType(int _type) { type = _type;}
+ inline void setEndianess(int _endianess) { endianess = _endianess;}
inline void setType(const QString& _type) { type = typeFromString(_type);}
void setPurpose(int _purpose);
void setDirection(int _direction);
protected:
QString name;
- int type;
- QString width;
int purpose;
int direction;
+ int type;
+ QString width;
+ int endianess;
+
AbstractBlock* owner;
/*!