Add Verilog 2005 () function.

git-svn-id: file://localhost/svn/verilator/trunk/verilator@1032 77ca24e4-aefa-0310-84f0-b9a241c72d87
This commit is contained in:
Wilson Snyder
2008-04-24 13:52:51 +00:00
parent ab83717b7d
commit 956a0a9c99
13 changed files with 184 additions and 4 deletions
+13
View File
@@ -259,6 +259,7 @@ V3Number::V3Number (FileLine* fileline, const char* sourcep) {
// Global
int V3Number::log2b(uint32_t num) {
// See also opCLog2
for (int bit=31; bit>0; bit--) if (num & (VL_ULL(1)<<bit)) return(bit);
return(0);
}
@@ -621,6 +622,18 @@ V3Number& V3Number::opOneHot0 (const V3Number& lhs) {
if (lhs.isFourState()) return setAllBitsX();
return setSingleBits(lhs.countOnes()<=1);
}
V3Number& V3Number::opCLog2 (const V3Number& lhs) {
if (lhs.isFourState()) return setAllBitsX();
int bit;
for (bit=lhs.width()-1; bit>=0; bit--) {
if (lhs.bitIs1(bit)) {
setLong(bit+1);
return *this;
}
}
setZero();
return *this;
}
V3Number& V3Number::opLogNot (const V3Number& lhs) {
// op i, 1 bit return