aboutsummaryrefslogtreecommitdiffstats
path: root/techlibs/intel_alm/common/alm_map.v
blob: 6697b2e785c6ed1a223a1da9a0f6cbaa8a1dcd32 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
module \$lut (A, Y);

parameter WIDTH = 1;
parameter LUT = 0;

(* force_downto *)
input [WIDTH-1:0] A;
output Y;

generate
    if (WIDTH == 1) begin
        generate
            if (LUT == 2'b00) begin
                assign Y = 1'b0;
            end
            else if (LUT == 2'b01) begin
                MISTRAL_NOT _TECHMAP_REPLACE_(
                    .A(A[0]), .Q(Y)
                );
            end
            else if (LUT == 2'b10) begin
                assign Y = A;
            end
            else if (LUT == 2'b11) begin
                assign Y = 1'b1;
            end
        endgenerate
    end else
    if (WIDTH == 2) begin
        MISTRAL_ALUT2 #(.LUT(LUT)) _TECHMAP_REPLACE_(
            .A(A[0]), .B(A[1]), .Q(Y)
        );
    end else
    if (WIDTH == 3) begin
        MISTRAL_ALUT3 #(.LUT(LUT)) _TECHMAP_REPLACE_(
            .A(A[0]), .B(A[1]), .C(A[2]), .Q(Y)
        );
    end else
    if (WIDTH == 4) begin
        MISTRAL_ALUT4 #(.LUT(LUT)) _TECHMAP_REPLACE_(
            .A(A[0]), .B(A[1]), .C(A[2]), .D(A[3]), .Q(Y)
        );
    end else
    if (WIDTH == 5) begin
        MISTRAL_ALUT5 #(.LUT(LUT)) _TECHMAP_REPLACE_ (
            .A(A[0]), .B(A[1]), .C(A[2]), .D(A[3]), .E(A[4]), .Q(Y)
        );
    end else
    if (WIDTH == 6) begin
        MISTRAL_ALUT6 #(.LUT(LUT)) _TECHMAP_REPLACE_ (
            .A(A[0]), .B(A[1]), .C(A[2]), .D(A[3]), .E(A[4]), .F(A[5]), .Q(Y)
        );
    end else begin
        wire _TECHMAP_FAIL_ = 1'b1;
    end
endgenerate
endmodule
/span>.date() time2 = datetime2.time() # The returned value should be a datetime assert isinstance(datetime2, datetime.datetime) assert isinstance(date2, datetime.date) assert isinstance(time2, datetime.time) # They should be identical (no information lost on roundtrip) diff = abs(date1 - date2) assert diff.days == 0 assert diff.seconds == 0 assert diff.microseconds == 0 # Year, Month & Day should be the same after the round trip assert date1.year == date2.year assert date1.month == date2.month assert date1.day == date2.day # There should be no time information assert time2.hour == 0 assert time2.minute == 0 assert time2.second == 0 assert time2.microsecond == 0 SKIP_TZ_ENV_ON_WIN = pytest.mark.skipif( "env.WIN", reason="TZ environment variable only supported on POSIX" ) @pytest.mark.parametrize( "time1", [ datetime.datetime.today().time(), datetime.time(0, 0, 0), datetime.time(0, 0, 0, 1), datetime.time(0, 28, 45, 109827), datetime.time(0, 59, 59, 999999), datetime.time(1, 0, 0), datetime.time(5, 59, 59, 0), datetime.time(5, 59, 59, 1), ], ) @pytest.mark.parametrize( "tz", [ None, pytest.param("Europe/Brussels", marks=SKIP_TZ_ENV_ON_WIN), pytest.param("Asia/Pyongyang", marks=SKIP_TZ_ENV_ON_WIN), pytest.param("America/New_York", marks=SKIP_TZ_ENV_ON_WIN), ], ) def test_chrono_system_clock_roundtrip_time(time1, tz, monkeypatch): if tz is not None: monkeypatch.setenv("TZ", "/usr/share/zoneinfo/{}".format(tz)) # Roundtrip the time datetime2 = m.test_chrono2(time1) date2 = datetime2.date() time2 = datetime2.time() # The returned value should be a datetime assert isinstance(datetime2, datetime.datetime) assert isinstance(date2, datetime.date) assert isinstance(time2, datetime.time) # Hour, Minute, Second & Microsecond should be the same after the round trip assert time1.hour == time2.hour assert time1.minute == time2.minute assert time1.second == time2.second assert time1.microsecond == time2.microsecond # There should be no date information (i.e. date = python base date) assert date2.year == 1970 assert date2.month == 1 assert date2.day == 1 def test_chrono_duration_roundtrip(): # Get the difference between two times (a timedelta) date1 = datetime.datetime.today() date2 = datetime.datetime.today() diff = date2 - date1 # Make sure this is a timedelta assert isinstance(diff, datetime.timedelta) cpp_diff = m.test_chrono3(diff) assert cpp_diff.days == diff.days assert cpp_diff.seconds == diff.seconds assert cpp_diff.microseconds == diff.microseconds def test_chrono_duration_subtraction_equivalence(): date1 = datetime.datetime.today() date2 = datetime.datetime.today() diff = date2 - date1 cpp_diff = m.test_chrono4(date2, date1) assert cpp_diff.days == diff.days assert cpp_diff.seconds == diff.seconds assert cpp_diff.microseconds == diff.microseconds def test_chrono_duration_subtraction_equivalence_date(): date1 = datetime.date.today() date2 = datetime.date.today() diff = date2 - date1 cpp_diff = m.test_chrono4(date2, date1) assert cpp_diff.days == diff.days assert cpp_diff.seconds == diff.seconds assert cpp_diff.microseconds == diff.microseconds def test_chrono_steady_clock(): time1 = m.test_chrono5() assert isinstance(time1, datetime.timedelta) def test_chrono_steady_clock_roundtrip(): time1 = datetime.timedelta(days=10, seconds=10, microseconds=100) time2 = m.test_chrono6(time1) assert isinstance(time2, datetime.timedelta) # They should be identical (no information lost on roundtrip) assert time1.days == time2.days assert time1.seconds == time2.seconds assert time1.microseconds == time2.microseconds def test_floating_point_duration(): # Test using a floating point number in seconds time = m.test_chrono7(35.525123) assert isinstance(time, datetime.timedelta) assert time.seconds == 35 assert 525122 <= time.microseconds <= 525123 diff = m.test_chrono_float_diff(43.789012, 1.123456) assert diff.seconds == 42 assert 665556 <= diff.microseconds <= 665557 def test_nano_timepoint(): time = datetime.datetime.now() time1 = m.test_nano_timepoint(time, datetime.timedelta(seconds=60)) assert time1 == time + datetime.timedelta(seconds=60) def test_chrono_different_resolutions(): resolutions = m.different_resolutions() time = datetime.datetime.now() resolutions.timestamp_h = time resolutions.timestamp_m = time resolutions.timestamp_s = time resolutions.timestamp_ms = time resolutions.timestamp_us = time