CTU CAN FD IP Core issueshttps://gitlab.fel.cvut.cz/canbus/ctucanfd_ip_core/-/issues2018-02-06T18:52:25Zhttps://gitlab.fel.cvut.cz/canbus/ctucanfd_ip_core/-/issues/61Prepare the actual documentation for transfer to the register map generation2018-02-06T18:52:25ZIlle, Ondrej, Ing.Prepare the actual documentation for transfer to the register map generationThe actual format of the register map documentation can not be generated
from IP-XACT without loss of information in the docu.
Move all the tables, pictures which are not going to be generated by the
script from IP-XACT into a separate ...The actual format of the register map documentation can not be generated
from IP-XACT without loss of information in the docu.
Move all the tables, pictures which are not going to be generated by the
script from IP-XACT into a separate chapters!
This includes:
RX Data format value into separate chapter describing frame format which will be generated from CAN_FD_frame_format register map
of IP-XACT.
TX Data format
RX Buffer memory layout picture.
Logger register values for EVENT_TYPE.Single source approachIlle, Ondrej, Ing.Ille, Ondrej, Ing.https://gitlab.fel.cvut.cz/canbus/ctucanfd_ip_core/-/issues/62Unit test consolidation2018-06-08T12:41:38ZIlle, Ondrej, Ing.Unit test consolidationMake sure that all the unit tests are accustomized to the changes done during resource optimizationsMake sure that all the unit tests are accustomized to the changes done during resource optimizationsTest maintenancehttps://gitlab.fel.cvut.cz/canbus/ctucanfd_ip_core/-/issues/63Identifier restructuring2018-04-05T10:48:23ZIlle, Ondrej, Ing.Identifier restructuringIt is more beneficial to swap the BASE and EXTENDED part of the identifier in the registers. BASE identifier should
be at the lowest bits while the EXTENDED should be at the highest bitsIt is more beneficial to swap the BASE and EXTENDED part of the identifier in the registers. BASE identifier should
be at the lowest bits while the EXTENDED should be at the highest bitsSocket CAN release featureshttps://gitlab.fel.cvut.cz/canbus/ctucanfd_ip_core/-/issues/64Version register2018-02-07T18:51:42ZIlle, Ondrej, Ing.Version registerAdd version register into the Core register map to distinguish between various versions of the CAN controller.
The most appropriate register for this would be uppest 16 bits of the DEVICE_ID registerAdd version register into the Core register map to distinguish between various versions of the CAN controller.
The most appropriate register for this would be uppest 16 bits of the DEVICE_ID registerSocket CAN release featuresIlle, Ondrej, Ing.Ille, Ondrej, Ing.https://gitlab.fel.cvut.cz/canbus/ctucanfd_ip_core/-/issues/65RX Buffer memory valid vector2018-04-05T10:48:23ZIlle, Ondrej, Ing.RX Buffer memory valid vectorRemove memory valid vector on RX Buffer. It is not neccessary and it will save some logic.
When the RX Buffer is empty (read_pointer = write_pointer) all zeroes should be returned on the output.Remove memory valid vector on RX Buffer. It is not neccessary and it will save some logic.
When the RX Buffer is empty (read_pointer = write_pointer) all zeroes should be returned on the output.Socket CAN release featureshttps://gitlab.fel.cvut.cz/canbus/ctucanfd_ip_core/-/issues/66Store number of words to read (from RX Buffer on current frame) into the firs...2018-02-09T12:50:19ZIlle, Ondrej, Ing.Store number of words to read (from RX Buffer on current frame) into the first FRAME_FORMAT word.1. Store number of words to read (from RX Buffer on current frame) into the first FRAME_FORMAT word.1. Store number of words to read (from RX Buffer on current frame) into the first FRAME_FORMAT word.Socket CAN release featuresIlle, Ondrej, Ing.Ille, Ondrej, Ing.https://gitlab.fel.cvut.cz/canbus/ctucanfd_ip_core/-/issues/67Optimize the RX Buffer message mark2018-02-21T09:38:36ZIlle, Ondrej, Ing.Optimize the RX Buffer message markRemove the message mark vector since it will consume lot of logic if the buffer size is significant.
Replace it with FSM which will substract the message count value once the whole frame is read (use additional counter which is filled at...Remove the message mark vector since it will consume lot of logic if the buffer size is significant.
Replace it with FSM which will substract the message count value once the whole frame is read (use additional counter which is filled at the time of FRAME_FORM read). Do not forget to clear the FSM during the reset and during the Release Receive Buffer.Socket CAN release featureshttps://gitlab.fel.cvut.cz/canbus/ctucanfd_ip_core/-/issues/68Separate RX Buffer write pointers2018-05-19T20:58:22ZIlle, Ondrej, Ing.Separate RX Buffer write pointersCreate additional commited write pointer which will be updated when the whole frame is ready for read.Create additional commited write pointer which will be updated when the whole frame is ready for read.Wishlisthttps://gitlab.fel.cvut.cz/canbus/ctucanfd_ip_core/-/issues/69Interrupt register extension2018-04-05T10:48:23ZIlle, Ondrej, Ing.Interrupt register extensionAdd intterrupt for receive buffer not empty.Add intterrupt for receive buffer not empty.Socket CAN release featureshttps://gitlab.fel.cvut.cz/canbus/ctucanfd_ip_core/-/issues/708 bit register replacement2018-02-06T15:47:21ZIlle, Ondrej, Ing.8 bit register replacementSince the actual implementation of registers is 32 bit there is set of dummy addresses defined in the IP-XACT.
This duplicity is not very good, and was used only temporarily not to have too many changes at the same time!
VHDL package fo...Since the actual implementation of registers is 32 bit there is set of dummy addresses defined in the IP-XACT.
This duplicity is not very good, and was used only temporarily not to have too many changes at the same time!
VHDL package for register map should be re-generated with address offsets from 8 bit register map, the registers
module implementation should be updated and test framework should be modified accordingly.
The advantage of the legacy approach resulted in C header generator which is able to group registers into
bitfield structures of 8,16,32 bits. Thus the update can be done only in HW while the SW header file generator
must only replace the address lookup mechanism with name concatenation of original registers.Single source approachIlle, Ondrej, Ing.Ille, Ondrej, Ing.https://gitlab.fel.cvut.cz/canbus/ctucanfd_ip_core/-/issues/71AXI Wrapper unit test2018-05-18T16:29:37ZIlle, Ondrej, Ing.AXI Wrapper unit testCreate a test which will be testing the AXI wrapper. Following questions should be decided:
1. What kind of test should it be? (unit, feature, sanity, completely new)??
2. Should it run in the current CAN Tester Framework or should it ru...Create a test which will be testing the AXI wrapper. Following questions should be decided:
1. What kind of test should it be? (unit, feature, sanity, completely new)??
2. Should it run in the current CAN Tester Framework or should it run separately in VUnit in GHDL?
3. Should it generate access to dedicated registers and test the outcome? Should it cover all registers?
4. Can we use some of the open-source AXI tools that already exists? Such as AXI BFM for transaction generation??Test maintenancehttps://gitlab.fel.cvut.cz/canbus/ctucanfd_ip_core/-/issues/72TXT Buffer prioritization2018-02-17T14:46:52ZIlle, Ondrej, Ing.TXT Buffer prioritizationIt might be more beneficial to create a priority between two buffers instead of comparing the timestamp values between the two frames! This will additionally save some logic.
The aim of this task is following:
1. Create buffer priority ...It might be more beneficial to create a priority between two buffers instead of comparing the timestamp values between the two frames! This will additionally save some logic.
The aim of this task is following:
1. Create buffer priority in the user registers for each TXT Buffer. All the priority values will be in 1 register to be updated at the same time.
2. TX Arbitrator will always pick a frame from higher priority buffer (assuming it is allowed for transmission and it is not empty). This can be decoded combinationally at one clock cycle and it should consume small amount of logic (small lengths of priority registers).
3. If the core is free, the actual selected buffer will be stored (the same as message source in the actual implementation of TX Arbitrator), and kept until the transmission will finish.
4. The core will propagate the frame to be transmitted from highest priority buffer once its timestamp value is higher than then timestamp of that actual frame.
Problems:
A) What should we do once we have the same priorities set on the buffers?? Possible solution: Use fixed order. E.g. First buffer has higher prority, Second will have the second highest, etc.
B) What to do about a situation when lower timestamp frame (should be transmitted sooner) will be present in the buffer with lower priority? Thus the frame with lower timestamp will be actually transmitted LATER because of the priority! Should we leave this to responsible user/driver designer? Or should we implement some kind of circuit which will detect these conditions and signal them? I assume no, I assume that the buffer priority should be the primary way how ot decide between the buffers and the timestamp only secondary!Socket CAN release featuresIlle, Ondrej, Ing.Ille, Ondrej, Ing.https://gitlab.fel.cvut.cz/canbus/ctucanfd_ip_core/-/issues/73TXT frame status2018-02-17T14:50:10ZIlle, Ondrej, Ing.TXT frame statusIt will be good to provide additional status signals on the TXT Buffers.
The actual implementation provides only "empty bit" on the buffer.
This pretty much fills the function of the "busy bit" since the
"empty bit" is set to 1 when the ...It will be good to provide additional status signals on the TXT Buffers.
The actual implementation provides only "empty bit" on the buffer.
This pretty much fills the function of the "busy bit" since the
"empty bit" is set to 1 when the frame is sucesfully transmitted!
If it is transmitted OK, then no problem.
The new implementation should provide next bit "TX OK" which signalizes
that the frame was transmitted without problem.Socket CAN release featureshttps://gitlab.fel.cvut.cz/canbus/ctucanfd_ip_core/-/issues/74Whole TXT buffer in SRAM2018-04-05T10:48:23ZIlle, Ondrej, Ing.Whole TXT buffer in SRAMThe TXT Buffer should be completely moved to an SRAM memory!
This means that also FRAME_FORMAT_W and IDENTIFIER_W and TIMESTAMPS words should be placed into the SRAM
memory and not be available on the output in paralell!!
The only paral...The TXT Buffer should be completely moved to an SRAM memory!
This means that also FRAME_FORMAT_W and IDENTIFIER_W and TIMESTAMPS words should be placed into the SRAM
memory and not be available on the output in paralell!!
The only paralell information about buffers will be whether the buffers are allowed, and their priority!
Based on this information the highest priority buffer will be selected, and the timestamp words will be
loaded. If the timestamp is lower, then it will be transmitted!
Then the FRAME_FORMAT and also IDENTIFIERs will be loaded.Socket CAN release featureshttps://gitlab.fel.cvut.cz/canbus/ctucanfd_ip_core/-/issues/75Extend the TX Buffers to 42018-04-05T10:48:23ZIlle, Ondrej, Ing.Extend the TX Buffers to 4Once the TX Buffer is completely present in the SRAM, and it is completely prioritized, it should be extended to 4 Buffers.
It might be even good to think whether not to create a generic amount of buffer (e.g. 2,3 or 4).
This should pla...Once the TX Buffer is completely present in the SRAM, and it is completely prioritized, it should be extended to 4 Buffers.
It might be even good to think whether not to create a generic amount of buffer (e.g. 2,3 or 4).
This should play along nicely with the buffer prioritization. If the logic vectors are implemented in generic amount, then
the extension should be no problem at all!Socket CAN release featureshttps://gitlab.fel.cvut.cz/canbus/ctucanfd_ip_core/-/issues/76Remove use_FD_size_option2018-02-10T16:07:58ZIlle, Ondrej, Ing.Remove use_FD_size_optionWith the proposals for the TXT Buffer optimizations, it is no longer necessary to have use_fd_size option.
Since all the buffers will be in SRAMs it has neglicible effect on the overall core size.With the proposals for the TXT Buffer optimizations, it is no longer necessary to have use_fd_size option.
Since all the buffers will be in SRAMs it has neglicible effect on the overall core size.Socket CAN release featureshttps://gitlab.fel.cvut.cz/canbus/ctucanfd_ip_core/-/issues/77Finalize the Socket CAN driver header format2018-03-26T14:12:02ZIlle, Ondrej, Ing.Finalize the Socket CAN driver header formatCreate the final version of the socket CAN driver header.Create the final version of the socket CAN driver header.Socket CAN release features2018-03-15https://gitlab.fel.cvut.cz/canbus/ctucanfd_ip_core/-/issues/78Byte enable in the test framework2018-05-20T07:54:11ZIlle, Ondrej, Ing.Byte enable in the test frameworkEmbedd the byte enable signal into the CANTest framework. Replace all the accesses with byte enables set to 0xF so farEmbedd the byte enable signal into the CANTest framework. Replace all the accesses with byte enables set to 0xF so farTest maintenancehttps://gitlab.fel.cvut.cz/canbus/ctucanfd_ip_core/-/issues/79Erase the 32 bit register map2018-02-07T18:19:06ZIlle, Ondrej, Ing.Erase the 32 bit register mapTo make the access truly single source, one version of the register map must be erased from the IP-XACT.To make the access truly single source, one version of the register map must be erased from the IP-XACT.Single source approachhttps://gitlab.fel.cvut.cz/canbus/ctucanfd_ip_core/-/issues/80Socket CAN driver low level draft2018-04-05T10:48:23ZIlle, Ondrej, Ing.Socket CAN driver low level draftEither extend the original driver or create a new one for Socket CAN with usage of native Linux structures. Create additional header file include which could be used by Mr. Novak for his project where Linux structures are not present!Either extend the original driver or create a new one for Socket CAN with usage of native Linux structures. Create additional header file include which could be used by Mr. Novak for his project where Linux structures are not present!Socket CAN release features2018-03-15